home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Logiciels PC Special 3
/
Logiciel PC - Hors-Serie 3.iso
/
Logs
/
arcade
/
retro11
/
DOCS
/
RETRO.FAQ
< prev
next >
Wrap
Text File
|
1998-12-03
|
42KB
|
1,086 lines
Retrocade - Version 1.1
Frequently Asked Questions
------------
This document is designed to answer the frequently asked questions with
regard to all versions of Retrocade. DOS/Windows/UNIX/Mac specific sections
will be indicated by those tags in parenthesis.
------------
* Section 1 - General Retrocade Questions
1-1. Why does Armor Attack flicker sometimes?
1-2. Why does Demon flicker really badly?
1-3. How can I make a given game fit better with the screen?
1-4. I get "Game 'x' not supported no matter what I do. What's wrong?
1-5. Some games have sound and some don't. Why?
1-6. Asteroids runs too fast
1-7. How can I alter the speed that a game is playing?
1-8. Where do I stick the ROM images?
1-9. Where do I stick the .PAK files?
1-10. I've modified my defctrls.ini file to make changes to the emulator's
assignments, but nothing changes when I try the altered game again.
1-11. I'm really offended by the splash screen. How can I get rid of it?
1-12. How can I get screeshots of my game in progress?
1-13. What do the fields in the performance monitor actually mean?
1-14. Why don't you provide a way to have a smaller sampling rate to increase
game emulation speed?
1-15. I want to use my own sample files with Retrocade. Can I do that?
1-16. Why doesn't game 'x' save my high scores?
1-17. Retrocade shows the correct fps, but the game is running too fast.
1-18. Why doesn't Retrocade support all ROM revisions of a particular game?
1-19. Wouldn't it be better/faster to break Retrocade up into smaller programs?
1-20. Why are the games that use antialiasing and translucent vectors so much
slower than the rest?
1-21. Why I can't turn the brightness all the way down to black?
1-22. What are the minimum requirements for all games to run full speed with
Retrocade?
1-23. Why can't I set the FPS lower than 20?
1-24. What is Retrocade's purpose?
1-25. Why did you choose JPG over GIF or some other format for screenshots?
1-26. The Williams games (Bubbles, Stargate, etc...) just sit there looking
at me with "Factory settings restored" on the screen and won't start.
What do I do to get it to go?
1-27. I'd like to squish/expand the vector games - especially Tempest. Is this
possible?
1-28. I want to modify the in-game controls to my own custom settings. How can
I do this?
1-29. Does Retrocade support multiple ROM pathnames? I have my ROMs in several
different subdirectories.
1-30. I get [CTRL=Failed] each time I try to start Retrocade. Why?
1-31. Game 'x' doesn't work properly with my Gamepad. What's wrong?
1-32. I get an assertion in games.c when I try to run Retrocade 1.1.
* Section 2 - Platform specific Retrocade questions
2-1. Why can't I get any backdrops with any of the games that support it?
2-2. I get no sound in *ANY* games. Why?
2-3. I get a black screen whenever I try to run any game in Retrocade, or the
machine locks up.
2-4. Is Retrocade (DOS) supposed to run under Windows?
2-5. Retrocade doesn't see my mouse/Wingman Warrior. Why?
2-6. The onscreen display does not come up at all when I hit F5. Why?
2-7. Retrocade isn't as fast as everyone makes it out to be on my machine, but
everyone else seems to be having great success. Why is my machine slower
than people with equivalent or lesser powered machines?
2-8. Retrocade crashes almost immediately on startup with "Loading..." with
a general proection fault. What's wrong?
2-9. My Logitech Wingman Warrior spinner doesn't work, but the Wingman itself
works just fine.
2-10. What video card(s) do you recommend for Retrocade for a PC?
2-11. My Microsoft Sidewinder Gamepad doesn't work when I'm running Retrocade
in a DOS box under Windows. Why not?
2-12. I get "Unable to copy screen contents into clipboard" whenever I try to
get a screenshot.
2-13. Does Retrocade support scanlines?
2-14. Why can't Retrocade deal with interrupts higher than IRQ 7?
--------
Q1-1. Why does Armor Attack flicker sometimes?
A. That is how the original game operated. This is normal.
--------
Q1-2. Why does Demon flicker really badly?
A. That is how the original game operated. This is normal.
--------
Q1-3. How can I make a given game fit better with the screen?
A. Try enabling the tweaked mode support (256x256, 224x288, and 288x224)
with the -tweak on/off parameter (DOS). These modes are not included by
default since they can be problematic, and performance in these modes is not
optimal. The -tweak command is sticky, so you only need to issue it once
and it will stick from that point on.
--------
Q1-4. I get "Game 'x' not supported no matter what I do. What's wrong?
A. Several possibilities. Make sure you're launching Retrocade with:
retro -g "game name", with the full game's name - NOT THE ZIP filename. If
the game is multi-worded, make sure you use quotes! Make sure that you have
the appropriate ZIP file for the game you want to run in either the current
directory where the Retrocade executable is launched, or in the subdirectory
where you have -romdir pointing. Make sure your ZIP archive is good, by
doing a pkunzip -v zipfile.zip on the game in question.
If you have any questions about what Retrocade finds, use the -romlist
option to emit a romlist.txt file. It will indicate any missing files and
what Retrocade is looking for.
--------
Q1-5. Some games have sound and some don't. Why?
A. The easy answer is some games do have sound engines in them, and some
don't. Retrocade is a continuing work in progress, and thusly everything
isn't complete.
Some games require samples, too. Do you have the appropriate sample files
(.PAK) for the games in question (if they exist)? Check the Retrocade
homepage at (www.retrocade.com) for the appropriate .PAK files. If you have
a corrupt .PAK file for any given game, the sound effects will not load up
or make any sound at all. You also may have an older .PAK file. Check the
size on the www.retrocade.com web site to ensure that what you have is
the correct size, and is also the most current.
--------
Q1-6. Asteroids runs too fast
A. Asteroids does not run too fast.
There were two versions of Asteroids produced - a 1MHZ and 1.5MHZ version.
The most common are the 1.5MHZ versions (which yeilds 60fps), and that is
what Retrocade defaults to. They were not different ROM revisions, only a
master clock divider chip on the board that was modified to make the game
run faster.
See Q12 below for how to change the speed at which it plays if you're
too much of a wimp to play the faster version. ;-)
--------
Q1-7. How can I alter the speed that a game is playing?
A. Bring up the onscreen display with the ` key (you know, like Quake!).
Scroll through the options with the up/down arrow keys until you get to the
"Frames Per Second" display. Use the left/right arrow keys to adjust the
game's speed. This can be done while the game is paused or is playing. Hit
the ` key to drop the onscreen display.
--------
Q1-8. Where do I stick the ROM images?
A. Wherever you'd like!
+ In the current subdirectory where Retrocade's executable is
+ In the ./roms subdirectory off of where Retrocade's executable is
+ In an user defined subdirectories specified by -romdir
If you have a common ROM subdirectory, specify -romdir c:\romdir (or
wherever) to indicate where your ROMs are. There is no need to reissue
this command more than once. It is sticky, and is stored in Retrocade's
registry.
You can also issue -romdir c:\romdir;d:\games\roms;e:\blah .... to search
each subdirectory for more ROM images. Multiple ROM paths are supported.
--------
Q1-9. Where do I stick the .PAK files?
A. One of two places:
+ In the current subdirectory where Retrocade's executable is
+ In the ./paks subdirectory off of where Retrocade's executable is
--------
Q1-10. I've modified my defctrls.ini file to make changes to the emulator's
assignments, but nothing changes when I try the altered game again.
A. Aha! You assume too much from the great defctrls.ini file!
The defctrls.ini file is only read when you run a game for the first time
(hence the name, DEFault ConTRoLs). After that, it pulls all settings out
of the registry, which is where your controller assignments are stored.
If you want to load your new default configuration, then use Retrocade's
GUI to load up your controller configuration for that game.
--------
Q1-11. I'm really offended by the splash screen. How can I get rid of it?
A. We're very sorry you're offended by a fully-clothed woman. Use the
-splash off option to keep her from popping up. If you use -splash off,
she will not appear again. -splash on Will reenable it.
--------
Q1-12. How can I get screeshots of my game in progress?
A. Hit printscreen! You will get filenames like astdelu0.jpg, and other
various abbreviations for the other games as well. It uses the ZIP filename
as a basis for naming these, and sequentially replaces the rightmost
major part of the filename with numbers. They will be placed in the /scrnshot
subdirectory where your Retrocade executable was launched from.
--------
Q1-13. What do the fields in the performance monitor actually mean?
A. Various things:
Cpu Emu:
This indicates the percentage of time spent in the processor emulators of
the various games.
Render :
With Raster games, this is the percentage of time Retrocade is spending
updating the offscreen backbuffer. With vector games, this is the percentage
of time spent traversing the vector generator engines and creating a
linelist.
Blit :
This is the percentage of time that Retrocade is spending transferring the
offscreen image to the video card itself. In vector games, this is the time
spent in the linedraw routines actually drawing/erasing the lines. NOTE:
When you have -vsync on, you'll notice your blit percentage go through the
roof. This is because when you are sync'd to vertical retrace, the speed
control is throttled to the update rate of the video card. The transfer of
of the offscreen image to the video card itself is done only during vertical
retrace and it must wait until it is complete before it can transfer the
image.
Idle :
Percentage of time Retrocade is spent waiting at the system timer to allow
the next frame to be generated.
Don't be alarmed if it says 100% idle. Retrocade does statistical sampling
at an even pace as to where it spends its time. It does this at a rate of
twice your game's framerate. If less than 40% of the overall processor is
being used, then you will see 100% idle because the sampling rate is just
not fast enough to grab the statistical samples. We could increase the
sample rate, but it would slow emulation down significantly. Besides, it's
only really meaningful when things are not running as fast as you'd expect,
right?
--------
Q1-14. Why don't you provide a way to have a smaller sampling rate to increase
game emulation speed?
A. In Retrocade's case the sound engine is efficient enough that a lower
sampling rate across all games has a miniscule effect on performance, and
thusly we decided not to bother enabling lower sampling rates.
--------
Q1-15. I want to use my own sample files with Retrocade. Can I do that?
A. No. The samples that are within the .PAK files are specially treated
samples. They come from a source of 16 bit samples, all at 44.1khz and
require that the zero crosspoints and loop points be set. This is not a
trivial process.
However, if you have good quality samples (44.1khz, 16 bit, and *CLEAN* -
not distorted or overdriven) that you would like us to include in games
that use them, contact the Retrocade Alliance and we'll work with you to
get them added.
--------
Q1-16. Why doesn't game 'x' save my high scores?
A. Because game 'x' doesn't have high score saving abilities, or you've
deleted the hiscores.reg file, or the game itself does not have a high
score saving ability (Cinematronics games for example).
--------
Q1-17. Retrocade shows the correct fps, but the game is running too fast.
A. The first question is do *ALL* games run too fast? If not, then it could
be that you're starting the game on a higher level (Star Wars, for example,
on Medium and Hard will run the games faster than if you choose Normal).
Did you bump the frames per second accidentally in the onscreen display?
Hit ` and scroll through the options using the up and down arrows. The
correct (original) rate of the game will be shown in parenthesis.
It's possible that we've botched the framerate of a given game. If you think
so, let the Retrocade alliance know the game you have an issue with and
a rate that "feels" better. We've been known to make mistakes, since some of
us don't have access to these games to compare.
Another thing - If you're running DOSRetro, don't run under Windows to get
accurate timing. The virtualized nature of timers and such (that Retrocade
relies on to throttle correctly) will cause Retrocade to give you inaccurate
results speed-wise.
If all games are running too fast, you may have shut off speed throttling.
Hit F6 to turn it back on again.
--------
Q1-18. Why doesn't Retrocade support all ROM revisions of a particular game?
A. That's not Retrocade's focus. It's to get the most "playable" versions
of the games. Besides, the ROM revision differences are usually not
something that the end user would even notice, so we don't bother with doing
it.
--------
Q1-19. Wouldn't it be better/faster to break Retrocade up into smaller programs?
A. No. This is a common misconception. Just because an executable gets
bigger doesn't mean it will run slower. You might have seen other emulators
get bigger and slower, but not only was the size changing, the internal
main execution code was changing as well, which is the entire reason things
got slower.
Breaking up the executable would also make it more difficult to maintain.
And besides, Retrocade is designed to be an all-in-one style of emulator
anyway, and would go against its goal. It is also designed with performance
in mind, so it will not suffer from progressive slowness from release to
release.
In other words, bad idea.
--------
Q1-20. Why are the games that use antialiasing and translucent vectors so much
slower than the rest? Why am I getting flicker?
A. This is a very good question, and I'm glad you asked, though the answer
is very long and involved. Now would be a good time to go get a beverage
of your choice:
I want to illustrate just what the linedraw code must go through to be able
to do regular, antialiased, translucent, and translucent/antialiased lines.
I have taken a sampling of each of the linedraw code for the different modes.
What I have exceprted is the routine which does nothing more than set the
pixel and advance the pointer. If you know something about programming, you'll
understand right away. If not, then you should be able to glean how much is
required to do these modes by the sheer size of the code.
First, this is the main loop for a regular piece of linedraw code:
alignymSkip20:
mov [ds:edi], ax ; Store our full strength pixel
sub edi, esi ; Move back!
add bp, bx ; Add our slope value
jnc nocarryov120
add edi, edx ; Advance Y coordinate
nocarryov120:
That's it. Only 5 lines of code to do a regular single-thickness pixel
linedraw. Now, let's try the translucent vector only code:
alignaSkip220:
mov ax, [ds:edi] ; Get our source data
mov edx, eax ; Get our color
and eax, 007ffh ; 16bpp - no red
and edx, 0f800h ; 16bpp - Just red
add edx, [colorred] ; Add in our red color band
test edx, 0ffff0000h ; Did we overflow red?
jz noRedOv21 ; Nope!
mov edx, 0f800h ; Red full
noRedOv21:
or eax, edx ; Put it back in with the color tuple
mov edx, eax ; Get our color
and eax, 0f81fh ; 16bpp - no green
and edx, 007e0h ; 16bpp - Just green
add dx, [colorgreen] ; Add in our green color band
test edx, 0fffff800h ; Did we overflow green?
jz noGreenOv21 ; Nope!
mov edx, 007e0h ; Green full
noGreenOv21:
or eax, edx ; Put it back in with the color
tuple
mov edx, eax ; Get our color
and eax, 0ffe0h ; 16bpp - no blue
and edx, 0001fh ; 15 or 16bpp - Just blue
add dx, [colorblue] ; Add in our blue color band
test edx, 0ffffffe0h ; Did we overflow green?
jz noblueOv21 ; Nope!
mov edx, 001fh ; blue full
noblueOv21:
mov [ds:edi], ax ; Store our translucent pixel
sub edi, [x_sign] ; Move back!
add bp, bx ; Add our slope value
jnc nocarryov210
add edi, [x_sign] ; To our video surface
nocarryov210:
Jumped from 5 lines to 30 lines. Lots more expensive. Remember, that this
is on a *PER PIXEL* basis. Also note that transluscency is reading from
the video memory to get good looking translucent vectors. This is a slow
process, since arbitrary line angles (Which this code handles) are not
sequential in memory, so no bursts can take place. Now that things
are starting to get a bit tougher, let's take a look at the antialiased
only code:
alignymSkip20:
mov ax, [color]
mov edx, ebp ; Get our weighting
shl ebp, 16 ; Save our weighting count for later
mov bp, dx ; Get our weighting back!
and bp, 0f000h ; Only the upper nibble matters
shr bp, 1
mov edx, eax
and eax, 007ffh ; 16bpp - no red
and edx, 0f800h ; 16bpp - Just red
sub dx, bp ; Sutract it!
jnc noredaaov0 ; Nope!
xor edx, edx ; Screw that!
noredaaov0:
or eax, edx ; OR Our color back in!
mov edx, eax
shr bp, 5 ; Shift 5 for 16bpp
and eax, 0f81fh ; 16bpp - no green
and edx, 007e0h ; 16bpp - Just green
sub dx, bp ; Sutract it!
jnc nogreenaaov0 ; Nope!
xor edx, edx ; Screw that!
nogreenaaov0:
or eax, edx ; OR Our color back in!
mov edx, eax
shr bp, 6 ; Shift 6
and eax, 0ffe0h ; No blue
and edx, 0001fh ; Just blue
sub dx, bp ; Sutract it!
jnc noblueaaov0 ; Nope!
xor edx, edx ; Screw that!
noblueaaov0:
or eax, edx ; OR Our color back in!
shr ebp, 16 ; Restore our weighting
mov [ds:edi], ax ; Store our full strength pixel
add edi, [x_sign] ; Move over pixel!
mov ax, [color]
mov edx, ebp ; Get our weighting
shl ebp, 16 ; Save our weighting count for later
mov bp, dx ; Get our weighting back!
mov dx, 00014h ; Get our base
shr bp, 12 ; Lower byte
sub dx, bp ; Subtract our weight
shl dx, 11 ; Back to our position!
mov bp, dx ; And make it our weight target
mov edx, eax
and eax, 007ffh ; 16bpp - no red
and edx, 0f800h ; 16bpp - Just red
sub dx, bp ; Sutract it!
jnc noredaaov1 ; Nope!
xor edx, edx ; Screw that!
noredaaov1:
or eax, edx ; OR Our color back in!
mov edx, eax
shr bp, 5 ; Shift 5 for 16bpp
and eax, 0f81fh ; 16bpp - no green
and edx, 007e0h ; 16bpp - Just green
sub dx, bp ; Sutract it!
jnc nogreenaaov1 ; Nope!
xor edx, edx ; Screw that!
nogreenaaov1:
or eax, edx ; OR Our color back in!
mov edx, eax
shr bp, 6 ; Shift 6
and eax, 0ffe0h ; No blue
and edx, 0001fh ; Just blue
sub dx, bp ; Sutract it!
jnc noblueaaov1 ; Nope!
xor edx, edx ; Screw that!
noblueaaov1:
or eax, edx ; OR Our color back in!
shr ebp, 16 ; Restore our weighting
mov [ds:edi], ax ; Store our antialiased pixel
sub edi, [x_sign] ; Move back!
add bp, bx ; Add our slope value
jnc nocarryov120
add esi, [x_sign] ; Add our X throw
add edi, [x_sign] ; To our back surface, too
nocarryov120:
Gee - that one is getting a bit hairier, eh? 70 Lines of assembly
instead of 5! The 16bpp 5-6-5 red/green blue gradients must be broken
out, added, checked for overflow, and fixed up if so, then put back in
the original position. Of course, the antialiased routine above does
TWO pixels, but that's the nature if Antialiased lines - you need
to do two pixels - one that's full strength and one that's the halftone.
Now we meet the monster of all monsters. The antialiased/translucent
vector routines. Keep in mind that this is the *DEFAULT* mode for games
with backdrops:
alignymSkip180:
mov ax, [color]
mov [step], ebx ; Save our step size back
mov bx, [edi] ; Get our current pixel
mov dx, bx
shl ebx, 16
mov bx, dx
mov edx, ebp ; Get our weighting
shl ebp, 16 ; Save our weighting count for later
mov bp, dx ; Get our weighting back!
and bp, 0f000h ; Only the upper nibble matters
shr bp, 1
mov edx, eax
and eax, 007ffh ; 16bpp - no red
and edx, 0f800h ; 16bpp - Just red
and bx, 0f800h ; 16bpp - Just red
sub dx, bp ; Sutract it!
jnc noredaaov8 ; Nope!
xor edx, edx ; Screw that!
noredaaov8:
add dx, bx ; Add in our red color band
jnc noRedaatvOv16 ; No overflow
mov edx, 0f800h ; Red full
noRedaatvOv16:
and edx, 0f800h ; Red full
or eax, edx ; OR Our color back in!
mov edx, ebx
shr edx, 16
mov bx, dx
mov edx, eax
shr bp, 5 ; Shift 5 for 16bpp
and eax, 0f81fh ; 16bpp - no green
and edx, 007e0h ; 16bpp - Just green
and bx, 007e0h ; 16bpp - Just green
sub dx, bp ; Sutract it!
jnc nogreenaaov8 ; Nope!
xor edx, edx ; Screw that!
nogreenaaov8:
add dx, bx ; Add in our red color band
test dx, 0f800h ; Did we overflow green?
jz noGreenOv16 ; Nope!
mov edx, 007e0h ; Green full
noGreenOv16:
or eax, edx ; Put it back in with the color
tuple
shr ebx, 16
and ebx, 01fh
mov edx, eax
shr bp, 6 ; Shift 6
and eax, 0ffe0h ; No blue
and edx, 0001fh ; Just blue
sub dx, bp ; Sutract it!
jnc noblueaaov8 ; Nope!
xor edx, edx ; Screw that!
noblueaaov8:
and edx, 01fh ; Only the blue gradient
and eax, 0ffe0h ; 16bpp - no blue
add dx, bx ; Add in our blue color band
test edx, 0ffffffe0h ; Did we overflow blue?
jz noblueOv16 ; Nope!
mov edx, 001fh ; blue full
noblueOv16:
or eax, edx ; OR Our color back in!
shr ebp, 16 ; Restore our weighting
mov [ds:edi], ax ; Store our full strength pixel
add edi, [x_sign] ; Move over pixel!
mov ax, [color]
mov bx, [edi] ; Get our current pixel
mov dx, bx
shl ebx, 16
mov bx, dx
mov edx, ebp ; Get our weighting
shl ebp, 16 ; Save our weighting count for later
mov bp, dx ; Get our weighting back!
mov dx, 00014h ; Get our base
shr bp, 12 ; Lower byte
sub dx, bp ; Subtract our weight
shl dx, 11 ; Back to our position!
mov bp, dx ; And make it our weight target
mov edx, eax
and eax, 007ffh ; 16bpp - no red
and edx, 0f800h ; 16bpp - Just red
and bx, 0f800h ; 16bpp - Just red
sub dx, bp ; Sutract it!
jnc noredaaov9 ; Nope!
xor edx, edx ; Screw that!
noredaaov9:
add dx, bx ; Add in our red color band
jnc noRedaatvOv17 ; No overflow
mov edx, 0f800h ; Red full
noRedaatvOv17:
and edx, 0f800h ; Red full
or eax, edx ; OR Our color back in!
mov edx, ebx
shr edx, 16
mov bx, dx
mov edx, eax
shr bp, 5 ; Shift 5 for 16bpp
and eax, 0f81fh ; 16bpp - no green
and edx, 007e0h ; 16bpp - Just green
and bx, 007e0h ; 16bpp - Just green
sub dx, bp ; Sutract it!
jnc nogreenaaov9 ; Nope!
xor edx, edx ; Screw that!
nogreenaaov9:
add dx, bx ; Add in our red color band
test dx, 0f800h ; Did we overflow green?
jz noGreenOv17 ; Nope!
mov edx, 007e0h ; Green full
noGreenOv17:
or eax, edx ; Put it back in with the color
tuple
shr ebx, 16
and ebx, 01fh
mov edx, eax
shr bp, 6 ; Shift 6
and eax, 0ffe0h ; No blue
and edx, 0001fh ; Just blue
sub dx, bp ; Sutract it!
jnc noblueaaov9 ; Nope!
xor edx, edx ; Screw that!
noblueaaov9:
and edx, 01fh ; Only the blue gradient
and eax, 0ffe0h ; 16bpp - no blue
add dx, bx ; Add in our blue color band
test edx, 0ffffffe0h ; Did we overflow blue?
jz noblueOv17 ; Nope!
mov edx, 001fh ; blue full
noblueOv17:
or eax, edx ; OR Our color back in!
shr ebp, 16 ; Restore our weighting
mov [ds:edi], ax ; Store our antialiased pixel
mov ebx, [step] ; Get our step size back
sub edi, [x_sign] ; Move back!
add bp, bx ; Add our slope value
jnc nocarryov1180
add esi, [x_sign] ; Add our X throw
add edi, [x_sign] ; To our back surface, too
nocarryov1180:
Wow! That's a bit over 120 lines of assembly code on a *PER PIXEL* basis!
The aa/tv linedraw code above is roughly 30 times slower (including the
PCI overhead) than the regular linedraw code at the beginning of this
message.
And this isn't crappy compiler-output code (compiler output is MUCH worse)
It's reasonably well optimized assembly.
Also, consider that translucent vector lines must be erased and redrawn
every single frame, whereas in the antialiased or regular linedraw modes,
they only need to be erased if they have moved from the last frame.
The bottom line is, antialaiasing is an expensive process CPU-wise.
translucent vectors are not quite as expensive CPU-wise, but are very
expensive PCI-bus wise. When you combine the horrors of antialiasing
and the expensive PCI-bus reads to video memory, it gets many times slower
and that's why you see flicker in some cases.
We're currently using a dirty linelist and a video card backbuffer to
be able to keep things steady. If your card does not support more than 1
video page at a given resolution, then God help you. Any modern card with
a megabyte or more of RAM will have 2 or more pages available, so I'm
suspecting that this is not the problem. All vector games with backdrops
default to 640x480 @ 16 bits per pixel, which winds up using about 1.2
megabytes of RAM.
And no, using a memory buffer and blitting dirty tiles will not help
performance - it will hinder it - especially when things get busy. Already
tried this approach.
Retrocade is clocked to the system timer, and will update the vectors at its
rate. The problem with this is that the video card may not be synchronized
with the system timer, and you'll get updates during the middle of a vertical
retrace, and you see flicker. Some cards will wait until the retrace is
complete before flipping the page and you won't have this problem, but a
good number don't. That's when you should use the -vsync option. This will
synchronize the updates to the vertical blanking period. If you still get
flicker after using this option, then you need more CPU horsepower to be
able to eliminate it. Either that, or shut off transluscency with the -notv
option.
We're currently looking at using MMX to handle the color gradient saturation
to help improve performance.
So when you run games with these kinds of features on your P90 and they
don't perform well or flicker, don't be disgusted that you have to disable
transluscency or antialiased vectors to get flicker free performance.
--------
Q1-21. Why I can't turn the brightness all the way down to black?
A. Because people fuss with the brightness controls sometimes, forget they've
turned them down all the way, and then complain that a given game gives them
a black screen. This prevents that from happening.
Besides, are you really going to be playing a game with the brightness
turned all the way down? We think not.
--------
Q1-22. What are the minimum requirements for all games to run full speed with
Retrocade?
A. A Pentium 133 (non-MMX is fine) with 32MB of RAM, and a good PCI video
card that natively supports VESA 2.x or higher. A Pentium 166 is required
if your video card does not support VESA 2.x or higher. A good video card
would be an ATI or a Matrox board, *NOT* A Cirrus Logic or Trident card
(both are poor performers).
--------
Q1-23. Why can't I set the FPS lower than 20?
A. Because the timer chip under DOS cannot go lower than 20fps accurately.
It slows all games down to unplayability at that rate.
--------
Q1-24. What is Retrocade's purpose?
A. High performance emulation, ease of use. It is designed to be an end-user
product for people to play. Retrocade's goal is not to emulate every game
under the sun, but the games that are desirable to most end users. All
Retrocade developers have different areas of interest with regard to games.
We can be influenced. ;-)
--------
Q1-25. Why did you choose JPG over GIF or some other format for screenshots?
A. Several reasons:
+ JPG Supports more than 256 colors
+ JPG Is a file format that is widely used/accepted in the internet
community (very common to have screenshots on web pages, right?)
+ JPG's File format is free
+ JPG Is supported by even the most primitive web browsers
--------
Q1-26. The Williams games (Bubbles, Stargate, etc...) just sit there looking
at me with "Factory settings restored" on the screen and won't start.
What do I do to get it to go?
A. Providing you haven't remapped the keys, hit F8. This is mapped to the
"Advance" button on the Williams hardware. The original games required you
to hit this button the first time you powered it up with a clear CMOS.
---------
Q1-27. I'd like to squish/expand the vector games - especially Tempest. Is this
possible?
A. Yes. Start up any vector game. Hit the ` key to bring up the onscreen
display. Scroll through the options with the up/down arrow keys. You'll
eventually find the Vector X/Y size and Vector X/Y position. Use the left
and right arrow keys to adjust any of the settings, and hit home to put it
back to its default. This is set on a per-game basis and is remembered from
game to game.
----------
Q1-28. I want to modify the in-game "system" controls to my own custom settings.
How can I do this?
A. Provided with Retrocade is a cabinet.ini file that looks like this:
=========================
;
; Cabinet mode controller init file. BE CAREFUL! If you screw this up, you
; may not be able to get out of Retrocade at all!
;
Performance = (key_f5)
Throttle = (key_f6)
GuiReturn = (key_esc)
Pause = (key_pause)
Exit1 = (key_pause + key_leftctrl)
Exit2 = (key_pause + key_rightctrl)
Screenshot = (key_printscreen)
Record1 = (key_printscreen + key_leftctrl)
Record2 = (key_printscreen + key_rightctrl)
Save1 = (key_printscreen + key_leftshift)
Save2 = (key_printscreen + key_rightshift)
GuiF1 = (key_f1)
GuiF2 = (key_f2)
GuiF3 = (key_f3)
GuiF4 = (key_f4)
Hue = (key_f8)
Reset1 = (key_f12 + key_leftctrl + key_leftalt)
Reset2 = (key_f12 + key_rightctrl + key_rightalt)
=========================
You can remap any function to be any definition. This is read at startup,
and is designed so you can put Retrocade inside a custom cabinet. The UI
has not been fully cabnet-ized, so you'll only be able to do limited work
in the UI.
----------
Q1-29. Does Retrocade support multiple ROM pathnames? I have my ROMs in several
different subdirectories.
A. Yes. Use "-romdir c:\dir1;d:\dir2;e:\dir3", etc.... This is sticky, so
you won't have to reissue it each time.
----------
Q1-30. I get [CTRL=Failed] each time I try to start Retrocade. Why?
A. Either you have a missing defctrls.ini file or there's a syntax error
in it. Snag the file from the standard archive again.
----------
Q1-31. Game 'x' doesn't work properly with my Gamepad. What's wrong?
A. Retrocade defaults all games to work with an analog joystick. A gamepad
appears as both an analog and digital joystick to Retrocade, and the two
controls override eachother - depending upon what is defined.
For each game that you're having trouble, go into the controller setup
section and turn off the axis controllers being controlled by the joysticks.
That will make everything work nicely.
----------
Q1-32. I get an assertion in games.c when I try to run Retrocade 1.0 after I
have run Retrocade 1.1.
A. You're probably trying to run the old Retrocade 1.0 on a newer RETRO.REG
file. Retrocade is not reverse compatible - only forward compatible. You
cannot run Retrocade 1.0 with registries created by 1.1. However, your 1.0
registry will be migrated to 1.1. New games will be added, and new controls
will be set up for those games.
--------
Q2-1. Why can't I get any backdrops with any of the games that support it?
A. It depends.
First off, make sure you've downloaded the appropriate .PAK file and placed
it either in Retrocade's directory, or in the ./paks directory one level
below the Retrocade directory.
Secondly, make sure that the game you're trying to play really does have a
backdrop or an overlay.
Lastly, if you are running any of the vector games and aren't getting
backdrops when you think you should, most likely your video card does not
support 16 bit per pixel mode, or does not have access to the linear
framebuffer. If you have a VESA 1.x compliant card, you will not have
a linear framebuffer, and all graphics operations will need to be paged.
Retrocade never supports backdrops in 8 bit per pixel modes, and supports
backdrops/overlays in 16 bit per pixel mode only if your card has linear
framebuffer access.
A possible solution to this problem is to get a copy of Scitech Display
Doctor to enable this functionality in your card (www.scitechsoft.com).
--------
Q2-2. I get no sound in *ANY* games. Why?
A. Do you have a Sound Blaster Pro (or better) in your machine? Retrocade
requires that you have a Sound Blaster Pro (or better/compatible).
Is there a BLASTER= environment variable set? If not, Retrocade cannot find
your sound card.
Is the interrupt set higher than IRQ 7? If so, Retrocade will not function,
as DOS4GW will not handle interrupts higher than IRQ 7. Other DOS extenders
that DO support higher interrupts have been tried with varying success.
DOS4GW Is by far the most stable.
Are you certain that the game you're trying to run really does have sound?
If not, you will get silence. Some of the games we have either not gotten
the samples for or sound just hasn't been added.
If all else fails, and you think you should be getting sound but aren't,
add the -log command to Retrocade when you start it and run your game, play
it for a few moments, and exit. It will create a game.txt file. Send that
file (zipped, please) to the Retrocade alliance.
--------
Q2-3. I get a black screen whenever I try to run any game in Retrocade, or the
machine locks up.
A. Wow. Real bad!
If you're running under Windows, reboot into DOS mode and try it again. Some
video card VXDs that provide VESA support are problematic, and the VESA
support may be buggy.
If you get the same results under straight DOS, add the -log command line
option to the Retrocade executable so that it will generate a game.txt file
and log debugging information. Send this file (zipped, please) to the
Retrocade alliance for examiniation. Also note the kind of video card you
have.
--------
Q2-4. Is Retrocade (DOS) supposed to be able to run under Windows?
A. A cautious "yes". We've found that Retrocade runs fine under Windows on
a myriad of machines. However (and a *BIG* however):
Many problems can arise from running under Windows. Joystick control may
be erratic, games may not run at totally proper speeds, some video modes
will not be available, sound might not be available, certain controllers
will not work properly (Wingman Warrior spinner for example), and other
potentially oddities. Windows is an ugly world where there's no guarantees
that two "identical" installations will work the same. Windows virtualizes
quite a few things for DOS programs, such as interrupts, timers, and
controller support. The reports may come in erratically and cause flaky
and inaccurate operation under Windows.
So the official stance is that if it works OK in DOS, but doesn't in Windows,
we're sorry, but RetroDOS is not officially supported under Windows.
However, if you're experiencing system lockups, protection faults, or other
crashing uglies, please invoke Retrocade with the -log option, zip up the
game.txt file it generates, and mail it to the Retrocade alliance for
examiniation. Retrocade should not crash under Windows - only certain options
should not work or work erratically.
--------
Q2-5. Retrocade doesn't see my mouse/Wingman Warrior. Why?
A. Do you have a mouse driver loaded? The best way to tell is to do a mem /c
at a DOS prompt. If you're running in a DOS box under Windows and your
mouse works OK there, then a mouse driver is not needed. If you are running
under straight DOS and get no mouse support, make sure you have a mouse
driver loaded.
In the case of the Wingman Warrior, you must have the Logitech driver
that supports the Wingman Warrior and the mouse, and it must be invoked
with the DUAL option so that they both work.
--------
Q2-6. The onscreen display does not come up at all when I hit F5. Why?
A. You're running a vector game, right? The onscreen display requires the
presence of a linear framebuffer to work. If you do not have VESA 2.x or
higher, you will not get a linear framebuffer. A linear framebuffer is not
required for raster games, and thusly will always work.
--------
Q2-7. Retrocade isn't as fast as everyone makes it out to be on my machine, but
everyone else seems to be having great success. Why is my machine slower
than people with equivalent or lesser powered machines?
A. It's a tough question to answer accurately in all cases, but slowness can
be attributed mostly to cards that do not have native VESA 2.x compliancy.
The only solution there is to either get a different video card or use
Scitech Display Doctor to enable linear framebuffering with VESA 2.x.
The second thing is the size of your system's cache, especially with 68000/
68010 games since the code breadth is fairly wide. 256K Cache is OK, but
512K cache or bigger will do *MUCH* better. Most systems today come with
512K cahce on them already.
Thirdly, are you running under Windows? That can knock performance down by
5-10%, and even more if you have other applications running. Hit F5 during
a game (and unthrottle it with F6) and watch where Retrocade is spending
most of its time. High percentages in the Blit category indicate video
card bottleneck issues.
--------
Q2-8. Retrocade crashes almost immediately on startup with "Loading..." with
a general proection fault. What's wrong?
A. We've found on a few machines that EMM386.EXE gets in the way of PCI
read/writes, which Retrocade needs to do to implement a workaround for
buggy Riva 128 VESA BIOSes. The only known workaround to this is to get rid
of EMM386.EXE entirely. It's really not necessary when running under Windows.
--------
Q2-9. My Logitech Wingman Warrior spinner doesn't work, but the Wingman itself
works just fine.
A. Running under Windows, are we?
You can thank Logitech for this one. The mouse VXD for the Wingman Warrior
does not support the spinner when event callbacks are used (Retrocade uses
callbacks for mouse & Wingman Warrior support since it's much cleaner and
requires no host CPU power unless the controller is moving). Logitech has
not fixed this problem. I've contacted them, and they are unwilling to
fix it.
There is no workaround except to load the DOS device driver under straight
DOS and use it.
--------
Q2-10. What video card(s) do you recommend for Retrocade for a PC?
A. We've had excellent luck with the ATI series, starting with the Pro
Turbo PC/2TV board through the Xpert @ Work and Xpert @ Play. All cards are
excellent performers, and work great right out of the box, and are also
compatible with all of the tweaked video modes.
Other beta testers have reported that the Matrox G200 is also an excellent
choice, in addition to the Riva TNT based boards.
---------
Q2-11. My Microsoft Sidewinder Gamepad doesn't work when I'm running Retrocade
in a DOS box under Windows. Why not?
A. As stated before, Retrocade/DOS is not designed to run under Windows,
and problems like this will crop up.
Retrocade talks directly to the game port to get Sidewinder Gamepad
information. Having the Sidewinder gamepad drivers installed under Windows
will cause collisions between Retrocade's polling routines and the Windows
driver for the Sidewinder. There is no workaround to this, other than to
uninstall your Sidewinder Gamepad drivers from Windows or run it in straight
DOS mode.
---------
Q2-12. I get "Unable to copy screen contents into clipboard" whenever I try to
get a screenshot.
A. Windows is trapping your printscreen key. To get around the problem:
+ Create a shortcut to the Retrocade executable
+ Right click on the shortcut
+ Click on properties
+ Click on the "misc" tab
+ Unclick PrtSc, Alt+PrtSc, and Alt+Space
+ Click Apply
+ Click OK
Just double click on the icon to start up Retrocade, and this problem will
not occur.
----------
Q2-13. Does Retrocade support scanlines?
A. Thanks to Nicola Salmoria from the MAME team, yes, Retrocade supports
scanlines. You can either enable them from within the UI (which will require
a restart of Retrocade) or you can enable them on the command line with the
"-scanlines on" option. This is sticky.
Only 224x288, 288x224 and 256x256 scanlined video modes are supported. You
will not get scanlines in any other resolution.
----------
Q2-14. Why can't Retrocade deal with interrupts higher than IRQ 7?
A. It's a limitation of the DOS extender that Retrocade uses - *NOT*
Retrocade itself.